/*
 * AndQuery.h
 *
 *  Created on: 2020年12月13日
 *      Author: san
 */

#ifndef ANDQUERY_H_
#define ANDQUERY_H_

#include <set>
#include <algorithm>


#include "BinaryQuery.h"

class AndQuery: public BinaryQuery {
	friend Query operator &(const Query &, const Query &);
//	AndQuery(const Query &lhs, const Query &rhs): BinaryQuery(lhs, rhs, "&") {}
	AndQuery(const Query &lhs, const Query &rhs): BinaryQuery(lhs, rhs, "&") {}

	// 具体的类：AndQuery继承了rep并且定义了其他纯虚函数
	TextQuery::QueryResult eval(const TextQuery &) override;
};

inline Query operator &(const Query &lhs, const Query &rhs)
{
	return std::shared_ptr<Query_base>(new AndQuery(lhs, rhs));
}

#endif /* ANDQUERY_H_ */
